2010-05-31 86 views
0

我與C-shell中工作,我試圖運行此腳本錯誤在csh腳本

set callsTo = "`cut -d" " -f2 ${1}`" 
echo $callsTo 

切斷從作爲第一個參數的文件接收數據:

> ./myscript data 

我只需要每一行的第二個字段:-f2

之後,我想檢查數據是否存儲,但我收到或錯誤不匹配。或空行。我的腳本有什麼問題?

此外,當我使用#! /bin/tcsh -f我收到此消息

tcsh [ -bcdefilmnqstvVxX ] [ argument ... ] 

回答

0

我不知道tcsh的,但不應該在該行

set callsTo = "`cut -d" " -f2 ${1}`" 

set callsTo = `cut -d" " -f2 ${1}`? 

在bash我會這樣做:

callsTo=`cut -d' ' -f2 $1`? 

希望這會有所幫助。

+0

沒有,'callsTo = $(切-d」'-f2 「$ 1」)'在bash不幸 – lego69 2010-05-31 10:11:06

+0

。與反引號相比,'$()'對用戶和嵌套更具可預測性。我不知道等價的csh,但是尋找它可能會有所幫助。 – 2010-05-31 10:24:25

+0

csh沒有'$(...)'語法;它只有反引號。 – 2011-08-25 14:25:07

1

雙引號不像那樣嵌套。

試試這個:

set callsTo = "`cut -d' ' -f2 ${1}`" 

此外,當我使用#! /斌/ tcsh的-f我收到此消息

的tcsh [-bcdefilmnqstvVxX] [參數...]

這很奇怪。是否可能在-f之後有一個流浪字符,也許是從Windows風格的行結束的'\r'字符? head -1 *foo*.tcsh | od -c的輸出是多少?

0

設置文件名= echo ${1}|cut -f1 -d'#'
回聲$文件名
試試這個