我创建了一个bash脚本test.sh
来检查一些端口是否正在侦听。因为我不想在shell脚本中硬编码端口或命令,所以我把它们都放在一个文件config_file
中,就像键值对一样。让我在下面展示文件和schell脚本;
test.sh
#!/bin/bash
cat config_file| while read port command; do
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null ; then
echo "" > /dev/null
else
eval "$command"
fi
done
配置文件
80 /bin/bash /home/user/sample_script1.sh
22 /bin/bash /home/user/sample_script2.sh
这两个文件sample_script1.sh
和sample_script2.sh
都意味着touch
一些示例文件。当我运行./test.sh
时,示例文件被正确创建(意味着调用了sample_script1.sh
和sample_script2.sh
)。但我明白
./test.sh: line 8: This: command not found
在终端。原因是什么以及如何解决这个问题?
1条答案
按热度按时间nlejzf6q1#
您可以将配置文件拆分到另一个字段,类似于:
如果它是一个文件,那么你可以不使用UUOC,只使用shell重定向,类似于:
或者,如果输入来自流/命令,则类似于: