tcsh 在 shell 脚本中传递一个变量
tcsh passing a variable inside a shell script
我在 shell 脚本中定义了一个变量,我想使用它。出于某种原因,我无法将它传递到我需要它的命令行中。
这是我的脚本,在最后几行失败了
#! /usr//bin/tcsh -f
if ( $# != 2 ) then
echo "Usage: jump_sorter.sh <jump> <field to sort on>"
exit;
endif
set a = `cat | tail -1` #prepares last row for check with loop
set b = #this is the value last row will be checked for
set counter = 0
foreach i ($a)
if ($i == "$b") then
set bingo = $counter
echo "$bingo is the field to print from $a"
endif
set counter = `expr $counter + 1`
end
echo $bingo #this prints the correct value for using in the command below
cat | awk '{print($bingo)}' | sort | uniq -c | sort -nr #but this doesn't work.
#when I use instead of $bingo, it does work.
请问如何正确地将 $bingo 传递到最后一行?
更新:根据 Martin Tournoij 接受的答案,处理命令中“$”符号的正确方法是:
cat | awk "{print("$"$bingo)}" | sort | uniq -c | sort -nr
它不起作用的原因是因为变量仅在双引号 ("
) 内被替换,而不是单引号 ('
),并且您使用的是单引号:
cat | awk '{print($bingo)}' | sort | uniq -c | sort -nr
以下应该有效:
cat | awk "{print($bingo)}" | sort | uniq -c | sort -nr
你这里也有错误:
#! /usr//bin/tcsh -f
应该是:
#!/usr/bin/tcsh -f
请注意,通常不建议使用 csh 编写脚本;它有很多怪癖,并且缺少一些功能,例如功能。除非你真的需要使用csh,否则建议使用Bourne shell (/bin/sh
, bash, zsh) 或者脚本语言(Python, Ruby, 等等)代替。
我在 shell 脚本中定义了一个变量,我想使用它。出于某种原因,我无法将它传递到我需要它的命令行中。
这是我的脚本,在最后几行失败了
#! /usr//bin/tcsh -f
if ( $# != 2 ) then
echo "Usage: jump_sorter.sh <jump> <field to sort on>"
exit;
endif
set a = `cat | tail -1` #prepares last row for check with loop
set b = #this is the value last row will be checked for
set counter = 0
foreach i ($a)
if ($i == "$b") then
set bingo = $counter
echo "$bingo is the field to print from $a"
endif
set counter = `expr $counter + 1`
end
echo $bingo #this prints the correct value for using in the command below
cat | awk '{print($bingo)}' | sort | uniq -c | sort -nr #but this doesn't work.
#when I use instead of $bingo, it does work.
请问如何正确地将 $bingo 传递到最后一行?
更新:根据 Martin Tournoij 接受的答案,处理命令中“$”符号的正确方法是:
cat | awk "{print("$"$bingo)}" | sort | uniq -c | sort -nr
它不起作用的原因是因为变量仅在双引号 ("
) 内被替换,而不是单引号 ('
),并且您使用的是单引号:
cat | awk '{print($bingo)}' | sort | uniq -c | sort -nr
以下应该有效:
cat | awk "{print($bingo)}" | sort | uniq -c | sort -nr
你这里也有错误:
#! /usr//bin/tcsh -f
应该是:
#!/usr/bin/tcsh -f
请注意,通常不建议使用 csh 编写脚本;它有很多怪癖,并且缺少一些功能,例如功能。除非你真的需要使用csh,否则建议使用Bourne shell (/bin/sh
, bash, zsh) 或者脚本语言(Python, Ruby, 等等)代替。