我有一个这样的文件(text.txt):
ls -al
ps -au
export COP=5
clear
每行对应一个命令。在我的脚本中,我需要读取每一行并启动每个命令。
ps:我尝试了所有这些选项,所有这些选项都与"导出"命令有相同的问题。文件中有"导出COP=5",但是运行脚本后,如果我在同一终端中回显$COP,则不会显示任何值
while IFS= read line; do eval $line; done < text.txt
请注意,通常不建议使用eval,因为它非常强大且容易被滥用。
但是,如果没有非特权用户对文本的影响风险.txt则应该没问题。
cat test.txt | xargs -l1 bash -c '"$@"' echo
为了避免混淆,我只需将文件从 text.txt
重命名为 text
并添加一个 shebang(例如 #!/bin/bash
) 作为文件的第一行。通过调用 chmod +x text
来确保它是可执行的。之后,您可以按预期执行它。
$ cat text
#!/bin/bash
ls -al
ps -au
clear
$ chmod +x text
$ ./text