2015-12-15 129 views
2

编码linux shell脚本时遇到一些小问题。如何将从linux命令生成的字符串输入到变量中?

我的代码如下,我正在努力将我修改的字符串名称输入到名为“fileName”的变量中,如下所示。然后,我命令回应以确定以前的代码运行良好。但是,它什么都不输出。

如何解决此问题?

for file in ./*.txt 
do 
fileName=$file | rev | cut -d. -f2 | rev 
    echo {$fileName} 
done 

正如我所说的,回声{$ filename}的没有输出,我想提取的话。

我期待着您的有用的建议:)

+0

致assi gn修改了'fileName'的值,你需要像'fileName = $(echo“$ file”| | rev |切-d。 -f2 | REV)'。这将'$ file'中的值与命令序列相呼应,并捕获变量中的输出。在Bash中,您可以使用[here string](https://www.gnu.org/software/bash/manual/bash.html#Here-Strings)而不是'echo'。 –

回答

1

你需要使用命令替换$()

还可以使用echo得到变量file的价值:

fileName="$(echo "$file" | rev | cut -d. -f2 | rev)" 

或者用这里字符串:

fileName="$(rev <<<"$file" | cut -d. -f2 | rev)" 
+0

感谢您的回答。 – sclee1

+0

好的。我会做的。但是,当我用awk编码时,它不起作用。我在for循环中运行下面的代码。 awk'{print($ 2“\ t”$ 3“\ t”$ 4“\ t”“0”“\ t”“0”“\ t”$ 5“\ t”$ 6“\ t”$ 7“\ t”$ 8 “\ t”$ fileName)}'$ file – sclee1

+0

@ sclee1这似乎与此不同,请将其作为一个新问题。 – heemayl

相关问题