#!/bin/bash if [[ $0 == *.sh ]]; then echo "这是一个脚本文件" else echo "这不是一个脚本文件" fi 为什么命令行中执行该脚本时,txt文件也是显示脚本文件
时间: 2024-02-18 12:01:16 浏览: 201
一个脚本文件
该脚本判断当前脚本文件名是否以 `.sh` 结尾来确定当前文件是否为脚本文件。如果你在命令行中执行 `./test.sh`,那么 `$0` 变量会被设置为 `./test.sh`,因此该脚本会判断 `./test.sh` 是否以 `.sh` 结尾。
如果你在同一个目录下存在一个以 `.txt` 结尾的文件,例如 `test.txt`,并且你在命令行中执行 `./test.txt`,那么 `$0` 变量会被设置为 `./test.txt`,同样也会被判断为脚本文件,因为 `*.sh` 通配符可以匹配任何以 `.sh` 结尾的字符串。
如果你想要确保该脚本只判断当前文件是否以 `.sh` 结尾,可以在脚本中添加一些条件来进行限制,例如:
```
#!/bin/bash
if [[ $(basename $0) == *.sh ]]; then
if [[ -f $0 ]]; then
echo "当前文件是一个脚本文件"
else
echo "当前文件不是一个脚本文件"
fi
else
echo "当前文件不是一个脚本文件"
fi
```
其中,`basename $0` 可以获取当前文件名(不包括路径),`-f` 参数可以判断当前文件是否存在。这样,就可以避免误判其他以 `.sh` 结尾的字符串。
阅读全文