我创建了这个脚本,用命令du -sh
因此,当我使用./repeat.sh du -sh
运行脚本时,它会输出:
52K .
52K .
52K .
etc ...
这是脚本:
#!/bin/sh
while true
do
if cmd="$1" "$@"
then sleep 2
fi
done
我试图改变它,以便如果没有提供参数,例如sh
位或提供的命令不正确它退出时没有做任何事情,但这个位在脚本中不起作用。如何根据我的具体情况设置这些条件?
谢谢
答案 0 :(得分:2)
您可以通过首先静默运行并验证其返回代码来测试命令的有效性(因为您无论如何都要在循环中运行它,您牺牲了一个执行来验证它):
$@ &>/dev/null
if [[ $? = 0 ]]
then
echo "Valid command"
fi
至于检查参数,这是对$2
参数的简单检查:
if [[ ! $2 ]]; then
echo "No arguments"
fi
组合这些功能可以让您在脚本中获得所需的功能。