shell脚本读入一个文件,如果不存在就继续读入
时间: 2023-08-02 18:38:49 浏览: 66
可以使用shell中的while循环和if语句来实现读入一个文件,如果不存在就继续读入的功能。具体实现可以参考如下示例代码:
```bash
#!/bin/bash
while true; do
read -p "请输入文件名: " filename
if [ ! -f "$filename" ]; then
echo "文件不存在,请重新输入!"
else
echo "文件内容如下:"
cat "$filename"
break
fi
done
```
上述代码中,while循环会一直运行,直到找到存在的文件为止。在循环体中,通过read命令读取用户输入的文件名,使用if语句判断文件是否存在,如果不存在则输出提示信息,否则使用cat命令显示文件内容,并使用break语句跳出循环。
相关问题
shell 脚本输入一个数字执行相应命令
### 回答1:
你可以使用 shell 脚本读入一个数字,然后根据数字选择执行不同的命令。
以下是一个简单的示例:
```
#!/bin/bash
echo "请输入一个数字:"
read num
if [ $num -eq 1 ]; then
echo "你选择了 1"
elif [ $num -eq 2 ]; then
echo "你选择了 2"
else
echo "请输入 1 或 2"
fi
```
在这个示例中,脚本会读入一个数字,然后使用 `if` 和 `elif` 语句判断数字是否为 1 或 2,根据数字选择执行不同的命令。
### 回答2:
Shell 脚本可以根据输入的数字来执行相应的命令。下面是一个示例脚本:
```
#!/bin/bash
echo "请输入一个数字:"
read num
case $num in
1)
echo "执行命令 1"
# 在这里写下需要执行的命令 1
;;
2)
echo "执行命令 2"
# 在这里写下需要执行的命令 2
;;
3)
echo "执行命令 3"
# 在这里写下需要执行的命令 3
;;
*)
echo "输入的数字无效"
;;
esac
```
在脚本中,首先打印提示信息并读取用户输入的数字。然后使用 `case` 语句来判断输入的数字,根据不同的数字执行对应的命令部分。在示例中,我只列举了三个数字和对应的命令,你可以根据实际需要添加更多的判断和命令选项。最后,如果输入的数字不匹配任何选项,会打印出 "输入的数字无效" 的提示信息。
使用这个脚本,当用户运行时,会提示输入数字,根据输入的数字执行相应的命令。注意,必要时可能需要修改脚本中的命令部分来符合你的实际需求。
### 回答3:
在编写shell脚本时,可以使用read命令来获取用户输入的数字,并通过if语句来判断执行相应的命令。以下是一个例子:
```shell
#!/bin/bash
echo "请输入一个数字(1-3):"
read num
if [ $num -eq 1 ]; then
echo "执行命令1"
# 在这里写要执行的命令1
elif [ $num -eq 2 ]; then
echo "执行命令2"
# 在这里写要执行的命令2
elif [ $num -eq 3 ]; then
echo "执行命令3"
# 在这里写要执行的命令3
else
echo "输入的数字不在范围内"
fi
```
以上的脚本首先提示用户输入一个数字,然后读取用户输入的值存入变量`num`中。接下来,通过if语句判断`num`的值,并执行相应的命令。如果输入的数字不在1-3范围内,则输出提示信息。
你可以根据实际需求修改脚本中的命令部分,以满足你的具体要求。
写一个shell脚本统计出一个文件中有多少个单词 并按照降序排列
可以通过以下 shell 脚本来实现统计文件中单词个数并按照降序排列的功能:
```shell
#!/bin/bash
# 统计文件中每个单词的出现次数
word_count=$(cat filename | tr -s ' ' '\n' | sort | uniq -c)
# 将单词出现次数按照降序排列
word_count_desc=$(echo "$word_count" | sort -rn)
# 输出结果
echo "$word_count_desc"
```
其中,`filename` 是要统计单词个数的文件名。该脚本会将文件中的每个单词按照出现次数统计,并将结果按照降序排列后输出。
具体实现方式是,首先使用 `cat` 命令将文件读入,然后使用 `tr` 命令将单词分隔符转换为换行符,并使用 `sort` 和 `uniq` 命令统计每个单词出现的次数。最后,使用 `sort` 命令将单词出现次数按照降序排列。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)