Linux Bash脚本如何逐个显示文件名
我创建文件“my.sh”,并在该文件中编写代码Linux Bash脚本如何逐个显示文件名,linux,bash,shell,parameters,Linux,Bash,Shell,Parameters,我创建文件“my.sh”,并在该文件中编写代码 if [ $# = 0 ]; then echo "filename: $0" fi 然后我执行my.sh文件 $my.sh->我想要输出[文件名:my.sh] 但是,结果显示[文件名:./my.sh] 最后,当我输入my.sh时,输出显示[文件名:my.sh],当我输入/my.sh时,输出显示[文件名:./my.sh]您可以使用: 另外,请注意,[[通常是。echo“文件名:${0##*/}”(使用带子字符串的bash参数扩展)此外,如果
if [ $# = 0 ]; then
echo "filename: $0"
fi
然后我执行my.sh
文件
$my.sh
->我想要输出[文件名:my.sh
]
但是,结果显示[文件名:./my.sh
]
最后,当我输入my.sh
时,输出显示[文件名:my.sh
],当我输入/my.sh
时,输出显示[文件名:./my.sh
]您可以使用:
另外,请注意,
[[
通常是。echo“文件名:${0##*/}”
(使用带子字符串的bash参数扩展)此外,如果没有/my.sh
,您就无法单独执行my.sh
,除非my.sh
位于您的路径中的目录中。当您运行/home/me/my.sh
时会发生什么?您是剥离/home/me/
?还是只剥离相关目录,如./
和//code>?pat又如何像/home/me/./me/./me/my.sh
?[$#=0]
这样的hs是不正确的,从“技术上”应该是[$#-eq 0]
,这样比较的是一个整数,而不是字符串。当我运行“$/home/fold/proj/my.sh”时,结果是文件名:/home/fold/proj/my.sh。另外,我只在同一目录下运行文件。
#!/usr/bin/env bash
if [ $# = 0 ]; then
echo $(basename $0)
fi