if [ $# -eq 0 ] ;then echo "未输入任何参数,请输入参数" echo "用法:$0 [文件名|目录名]" fi if [ -f $1 ];then echo "该文件,存在" ls -l $1 else echo "没有该文件" fi if [ -d $1 ];then echo "该目录,存在" ls -ld $2 else echo "没有该目录" fi为啥我没有给任何参数也会往下继续执行判断
时间: 2023-11-27 17:50:56 浏览: 32
这是因为在你的代码中,判断是否输入参数的语句和后面的判断文件或目录是否存在的语句是分开的,没有连续的逻辑判断。当你没有输入参数时,第一个条件 `$# -eq 0` 是成立的,就会执行后面的语句。
你可以将这两个判断语句合并,使用 `elif` 来实现连续的逻辑判断,如下所示:
```bash
if [ $# -eq 0 ]; then
echo "未输入任何参数,请输入参数"
echo "用法: $0 [文件名|目录名]"
elif [ -f $1 ]; then
echo "该文件存在"
ls -l $1
elif [ -d $1 ]; then
echo "该目录存在"
ls -ld $1
else
echo "不存在该文件或目录"
fi
```
这样,当你没有输入参数时,就会直接输出提示信息,不会执行后面的判断语句。如果输入的参数既不是文件也不是目录,则会输出提示信息 "不存在该文件或目录"。
相关问题
#!/bin/bash echo -n enter filename: read fname echo enter words: read words echo $words 2>/dev/null >$fname if [ $? –eq 0 ] then echo Write successfully else echo write error fi
这是一个简单的 Bash 脚本,它会提示用户输入一个文件名和一些文本,然后将该文本写入该文件中。如果写入成功,则输出 "Write successfully",否则输出 "write error"。
脚本中的第一行 "#!/bin/bash" 是指定使用 Bash 解释器来运行该脚本。
接下来的两行代码分别提示用户输入文件名和文本,并将它们存储在变量 $fname 和 $words 中。
然后,脚本尝试将 $words 写入到 $fname 指定的文件中。"2>/dev/null" 表示将标准错误输出重定向到 /dev/null,这样可以防止一些不必要的错误信息输出到终端。
最后,脚本检查写入操作的返回值($?)是否为0,如果是,则输出 "Write successfully",否则输出 "write error"。
需要注意的是,脚本中有一些语法错误,比如 if 语句中的 "-eq" 前后应该有空格,"echo $words 2>/dev/null >$fname" 命令中应该加上双引号来避免空格等特殊字符的问题。正确的脚本应该是这样的:
```bash
#!/bin/bash
echo -n "Enter filename: "
read fname
echo "Enter words: "
read words
echo "$words" 2>/dev/null >"$fname"
if [ $? -eq 0 ]
then
echo "Write successfully"
else
echo "Write error"
fi
```
8. 写一个脚本,命令行参数是 1 - 2 个文件名。功能如下 1. 如果没有命令行参数,或者命令行参数大于2个,输出脚本使用方法 2. 如果只有一个参数:(1)文件不存在,提示错误(2)文件存在,则输出文件内容 3. 如果有两个参数:(1)如果任何一个文件不存在,提示错误(2)如果两个文件都存在,用diff比较结果
以下是脚本的代码:
```bash
#!/bin/bash
# 检查命令行参数数量是否正确
if [ $# -eq 0 ] || [ $# -gt 2 ]; then
echo "Usage: $0 file1 [file2]"
exit 1
fi
# 检查第一个文件是否存在
if [ ! -f "$1" ]; then
echo "Error: $1 does not exist"
exit 1
fi
# 如果只有一个参数,输出文件内容
if [ $# -eq 1 ]; then
cat "$1"
exit 0
fi
# 检查第二个文件是否存在
if [ ! -f "$2" ]; then
echo "Error: $2 does not exist"
exit 1
fi
# 如果两个文件都存在,用diff比较结果
diff "$1" "$2"
```
脚本使用方法:
```bash
# 输出使用方法
$ ./script.sh
Usage: ./script.sh file1 [file2]
# 文件不存在
$ ./script.sh missing_file
Error: missing_file does not exist
# 输出文件内容
$ ./script.sh file1
# 比较两个文件
$ ./script.sh file1 file2
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)