簡體   English   中英

bash / csh - 回顯字符串“$#argv”和“#!/ bin / csh”

[英]bash/csh - echo the strings “$#argv” and “#!/bin/csh”

我想創建一個csh與另一飛csh的腳本echo荷蘭國際集團一堆報表到另一個文件並運行它。

但我無法回復像"$#argv""#!/bin/csh"這樣的字符串

第一個總是由生成器csh解析為#argv值,而shebang只是給出一個錯誤,說Event not found 有什么方法可以回復這些文件嗎?

我很好用生成器csh代替bash但輸出腳本必須是csh,因為它使用了一大堆csh環境變量。

PS - 我試過echo -e並嘗試在任何地方添加反斜杠但是徒勞無功。 當使用單引號而不是double時,它也不起作用。

csh - 類似於POSIX類shell - 使用引號字符串( '...' )表示文字字符串 (不受shell擴展影響的字符串 ) - 與引號字符串( "..."形成對比,其中擴展了 $ -prefixed引用(插入,立即)

因此,以下命令應該起作用:

% echo '$#argv'
#argv

但是, 解釋! - 命令歷史記錄功能 - 甚至在通常的shell擴展之前 ,因此需要使用\\進行額外的轉義層

% echo '#\!/bin/csh'
#!/bin/csh

此外 - 再次,如在POSIX類似的shell中 - 您可以在直接相鄰的標記中混合引用樣式形成單個復合字符串

% set arg = 3
% echo 'if($#argv < '"$arg"') then'
if($#argv < 3) then

注意只有 $arg被擴展(插值),因為(“唯一的部分”)包含在"..."

在這種特殊情況下, $arg 引用使用也會起作用,但請注意使用包含模式元字符 (例如*? )的未加引號 (子)字符串 - 再次,如在POSIX類似的shell中 - 使得(整個) )字符串受globbing (文件名擴展)

您可以使用echo with escapes從csh獲取該輸出:

echo '$#argv'
echo '#\!/bin/csh"

根據以下成績單:

% cat testprog.csh
echo '$#argv'
echo '#\!/bin/csh'

% csh testprog.csh
$#argv
#!/bin/csh
% 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM