我不知道如何使用变量执行命令并获取其结果。我有许多.h
和.c
文件,需要将每个文件从ISO-8859转换为UTF-8。
所以我执行以下操作:
ls | grep "\.[ch]" | xargs myscript.sh
在我的脚本中,文件名存储在变量
$1
中。现在我需要执行以下操作:iconv -f ISO-8859 -t UTF-8 $1
并且存储此结果,因为 iconv
会打印到标准输出。
result=`iconv -f ISO-8859 -t UTF-8 $1`
echo $result
这似乎不起作用,因为它给了我一些不匹配的东西,而不是转换后的$1
。
ls | grep ..
命令列出的文件中,有没有文件名中带空格的?那会导致问题。尝试将result=...
中的$1
改为"$1"
,但你可能需要想办法处理文件名中的空格。请编辑你的问题,提供适当的 $1 示例值和 scramble 内容的确切文本。祝好运。 - shellterecho "$result"
以保留内部间距。如果没有双引号,则输出为单行,并将一个或多个空格序列缩减为单个空格。 - Jonathan Leffler