【发布时间】:2022-12-12 09:44:28
【问题描述】:
我试图循环几个 linux 命令并将它们重定向到一个文件,我在根据命令名称分配文件名时遇到困难。我确定有更好的方法可以做到这一点,但现在这就是我的脚本
#!/bin/sh
j=0
fileName=ls
fileName1=date
echo $fileName$j
for item in "ls -l >> /home/Desktop/$fileName$j" "date >>/home/Desktop/$fileName$j";do
eval $item
j=$((j+1))
done
这些命令有效,但它不会创建文件名,因为我希望有 ls 文件和日期文件。考虑到我有 20 多个命令,在名称与其内容相关的文件中获取这些命令输出的最佳方法是什么。
我曾尝试使用 eval 来获得动态变量名,但没有成功。
【问题讨论】:
-
您好,欢迎来到 Stack Overflow。由于这是一个学习网站,我想向您推荐以下网站:BashFAQ: never parse ls 和BashFAQ#048: eval is evil 和BashFAQ#050: how to build commands
-
感谢@kvantour,我能够在 bash 中执行此操作,但在 sh 中特别需要它,无法在那里找到好的资源。此外,这里的命令只是示例,而不是我正在查看的确切命令。我的问题是文件名变量有动态命名,所以在循环中我可以使用它。
标签: sh