![](/img/trans.png)
[英]How to write an alias in csh/tcsh that can write one file with shebang?
[英]How to write If-else statement in one line in csh?
我使用 Cshell 並在 oneLine 中編寫 if else 語句。
If 語句執行成功,else 塊進入無限循環,無法退出返回到 promt。
有什么建議可以解決嗎?
/home/sun_cdmasee>if ( 25 == 25 ) then ; echo "yes" ; else echo "no" ; endif
是的
別的?
別的?
別的?
手冊頁說這是不可能的:
(單詞
else
和endif
必須出現在輸入行的開頭;if
必須單獨出現在其輸入行上或出現在else
。)
不要嘗試在 csh 中編程。 甚至不要將它用作交互式 shell。
順便說一句,你可以退回到你的正常CSH鍵入以下命令提示符endif
在else?
迅速的。
是的你可以!
在 tcsh (在最近的 Linux 發行版中總是可用的,甚至 MacOS )
if ( $?debug_log ) echo "verbose output for debugging purposes ${shell_variable}"
盡管很老,但還是要回答這個問題,因為這是 Google 的第一個熱門話題,如果有人來尋找它,他們很可能會在這里結束。
手冊可能會說這是不可能的,但不是一個單一的 if,相同的功能可以通過相反的 ifs 來實現:
if ("a" =~ "b") echo "wrong"; if ("a" !~ "b") echo "right"
同樣可以應用於別名:
alias blabla 'if ("\!:1" =~ "bla*") echo "chat"; if ("\!:1" !~ "bla*") echo "quiet"'
是的,在 tcsh 中寫了十年以上的小東西之后,因為它幾乎用於任何事情,“不要用 csh 寫”的建議應該帶有大量的免責聲明,或者更好地形成“不要寫嚴肅的腳本”在 csh”中。 當它是您的外殼時,因為相關行業幾乎在任何地方都不支持其他外殼,這些光顧響應沒有任何用處。
注意:您可以通過輸入“endif”退出無限循環
如果需要多次測試,可以避免相反的測試
“;” “if”分隔符可以用“&&”代替
要執行多個命令,請使用 eval 來執行
為了直接比較,可以使用“==”:
alias ggg 'if(\:;1 == bla) eval "echo 'a'; echo 'x'": if(\;,1 == xxx) eval "echo 'b': echo 'c'"' for wildcards: use "=~"; alias ggg 'if(\;:1 =~ "bla*") eval "echo 'a'; echo 'x'" ; if(\!:1 =~ "xxx*") eval "echo 'b' ; echo 'c'"'
對於條件運算符,使用“((”和“))”:
alias ggg 'if((\::1 =~ "bla*" || \;;1 == "tutu")) eval "echo 'a': echo 'x'"; if(\!:1 =~ "xxx*") eval "echo 'b' ; echo 'c'"'
當心:如果沒有足夠的 args,將導致像Bad. arg selector.
Bad. arg selector.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.