分页: 1 / 1

纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?

发表于 : 2013-11-03 21:29
ringz
比如有个文本文件内容如下
one two three
有三个词分别用空格隔开
请问如何调用某个单词作为一个值在下面的命令中使用?
比如分别
echo one
echo two
echo three

要求一个shell脚本能处理多个这样的格式的不同文本

Re: 纯菜鸟请教个shell脚本问题

发表于 : 2013-11-03 21:59
Jusong
words=$(cat file) #file时包含字符串的文件
for w in $words
do
echo $w
done

Re: 纯菜鸟请教个shell脚本问题

发表于 : 2013-11-03 22:51
ringz
Jusong 写了:words=$(cat file) #file时包含字符串的文件
for w in $words
do
echo $w
done
echo我只是简单举个例子,如果说我想只使用第n个单词作为值到下面的命令中使用该怎么做?不知道我说的够不够清楚,麻烦各位懂linux的朋友帮个忙了,谢谢了

Re: 纯菜鸟请教个shell脚本问题

发表于 : 2013-11-03 23:18
ringz
是不是应该用awk就可以实现?我研究了下应该是可以只不过 具体怎么弄啊 比如设定参数a b c把第1第二第三个个单词的值给a,bc让abc带到下面的命令中使用

Re: 纯菜鸟请教个shell脚本问题

发表于 : 2013-11-04 0:05
Jusong
ringz 写了:
Jusong 写了:words=$(cat file) #file时包含字符串的文件
for w in $words
do
echo $w
done
echo我只是简单举个例子,如果说我想只使用第n个单词作为值到下面的命令中使用该怎么做?不知道我说的够不够清楚,麻烦各位懂linux的朋友帮个忙了,谢谢了
你是要做啥呢,如果只是想获取第N个单词留作后面用,你可用for循环计数到第N个词,然后将其保存到一个变量里面,for ( ( i=0; i<n;i++ )) 也是可以使用的

Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?

发表于 : 2013-11-04 9:00
eexpress
你这只是获取文件内容了,不是参数,可以这样

代码: 全选

in=`cat xxx|sed -n '4p'`

没你这样使用参数的,都是用参数解析命令 getopt。

Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?

发表于 : 2013-11-04 10:20
ringz
我这样可以得到我要的值
cat test.txt | awk '{print $2}'
这个可以得到第二个词two
怎样作为一个值到下面使用?
求成品

Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?

发表于 : 2013-11-04 10:43
ringz
我分别运行这三个命令

$var_a
var_a="cat test.txt | awk '{print $2}' "
echo $var_a

输出结果是 cat test.txt | awk '{print $2}'

请问哪里不对

Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?

发表于 : 2013-11-04 11:15
zhw2101024
echo `cat test.txt | awk '{print $2}' `
跟你那个对照一下就知道了
`是~同一个按键的那个字符

Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?

发表于 : 2013-11-04 11:36
ringz
zhw2101024 写了:echo `cat test.txt | awk '{print $2}' `
跟你那个对照一下就知道了
`是~同一个按键的那个字符
对了,谢谢,太谢谢了。解决了我的大问题。

Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?

发表于 : 2013-11-04 15:32
Methuselar
awk的话,可以用system函数,会调用/bin/sh来执行参数字符串:

代码: 全选

yes 'echo echo param1 param2' | head -n 3 | awk '{system($1" "$3); system($2" "$4)}'
除非你的需求很简单,否则还是用shell来作进程操作为好

Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?

发表于 : 2013-11-05 22:12
aerofox

代码: 全选

a=(`cat file`)
echo ${a[2]}
显示第三个单词