如何在LinuxBash中检查脚本文件是否存在并在一行程序中执行它
我在不同的目录中有很多脚本, 我想检查这些脚本文件是否存在,然后以最短的方式在一行中执行它们。如何在LinuxBash中检查脚本文件是否存在并在一行程序中执行它,linux,bash,Linux,Bash,我在不同的目录中有很多脚本, 我想检查这些脚本文件是否存在,然后以最短的方式在一行中执行它们。 有一个简单的方法: if [ -f /A/B/C/foo.sh ]; then /A/B/C/foo.sh 我能缩短这一班轮吗 [ -f /A/B/C/foo.sh ] && /A/B/C/foo.sh &&是一个类似C的和。如果左侧的命令返回true,则执行右侧的命令 &&是一个类似C的和。如果左侧的命令返回true,请执行右侧的命令。是,可以使用速记格式进一步缩短: [ -f
有一个简单的方法:
if [ -f /A/B/C/foo.sh ]; then /A/B/C/foo.sh
我能缩短这一班轮吗
[ -f /A/B/C/foo.sh ] && /A/B/C/foo.sh
&&
是一个类似C的和。如果左侧的命令返回true,则执行右侧的命令
&&
是一个类似C的和。如果左侧的命令返回true,请执行右侧的命令。是,可以使用速记格式进一步缩短:
[ -f /A/B/C/foo.sh ] && /A/B/C/foo.sh || echo "script not found"
是的,它可以用速记格式进一步缩短:
[ -f /A/B/C/foo.sh ] && /A/B/C/foo.sh || echo "script not found"
您可以使用如下函数:
run() { [[ -x $1 ]] && "$@"; }
然后将函数用作:
run '/A/B/C/foo.sh'
run '/A/B/C/bar.sh'
您可以使用如下函数:
run() { [[ -x $1 ]] && "$@"; }
然后将函数用作:
run '/A/B/C/foo.sh'
run '/A/B/C/bar.sh'
试试bash:
以及它的工作原理
$ cat src.sh
echo "Test test"
//if src.sh exist
$test -e src.sh && sh src.sh
Test test
// if not, src.sh not run
$test -e src1.sh && sh src.sh
试试bash:
以及它的工作原理
$ cat src.sh
echo "Test test"
//if src.sh exist
$test -e src.sh && sh src.sh
Test test
// if not, src.sh not run
$test -e src1.sh && sh src.sh
简单使用
/A/B/C/foo.sh
将检查此脚本文件是否存在,然后执行它。如果脚本不存在,它将报告
bash:/A/B/C/foo.sh:没有这样的文件或目录
或者,您可以使用以下命令抑制错误消息:
/A/B/C/foo.sh 2>/dev/null
正如其他人所建议的,您还可以使用
[-x/A/B/C/foo.sh]&&/A/B/C/foo.sh
注意-x
而不是-f
(测试文件是否可执行)
如果在不同的目录中有许多脚本,则可以使用以下一行程序执行它们:
用于f in/A/B/C/foo.sh/D/E/f/bar.sh;执行[-x“$f”]&&“f”;完成
只需使用
/A/B/C/foo.sh
将检查此脚本文件是否存在,然后执行它。如果脚本不存在,它将报告
bash:/A/B/C/foo.sh:没有这样的文件或目录
或者,您可以使用以下命令抑制错误消息:
/A/B/C/foo.sh 2>/dev/null
正如其他人所建议的,您还可以使用
[-x/A/B/C/foo.sh]&&/A/B/C/foo.sh
注意-x
而不是-f
(测试文件是否可执行)
如果在不同的目录中有许多脚本,则可以使用以下一行程序执行它们:
用于f in/A/B/C/foo.sh/D/E/f/bar.sh;执行[-x“$f”]&&“f”;完成
为什么要短一点?,“您拥有的是清晰的,正如预期的那样为什么要短一点?”,您拥有的是清晰的,正如预期的那样。如果。。。否则…
。签出。如果。。。否则…
。退房。我不想要第二个/A/B/C/foo。狗屎是一个基本命令。如果你找到一个解决这个问题的特殊命令,它基本上是一样的。我不想要第二个/a/B/C/foo。狗屎是一个基本命令。如果你找到一个特殊的命令来解决这个问题,那么它可能是基本相同的。