編輯:已解決,放在echo前面$1
創建的 bash 檔案應該將一個句子作為引數/輸入/無論它叫什么,將其保存到一個變數中,然后創建一個變數,其中它只是每個單詞的第一個字母的字串,最后列印出來.
例子:
sh test.sh 'i like that dog'
iltd
相反,我什么也沒得到。
我是 bash 腳本的新手,這就是我所擁有的
#!/bin/bash
name=$($1 | sed -e 's/$/ /' -e 's/\([^ ]\)[^ ]* /\1/g' -e 's/^ *//')
echo $name
無論我做錯什么,都遠遠高于我。任何幫助和解釋將不勝感激
uj5u.com熱心網友回復:
你在那里失蹤echo了。這似乎運作良好:
#!/bin/bash
name=$(echo $1 | sed -e 's/$/ /' -e 's/\([^ ]\)[^ ]* /\1/g' -e 's/^ *//')
echo $name
它是如何作業的?
該echo命令將引數從$1echo 發送到標準輸出,標準輸出由|tosed的標準輸入重定向。第一個sed運算式s/$/ /在末尾附加一個空格,這是下一個運算式所需要的,s/\([^ ]\)[^ ]* /\1/g其中\([^ ]\)是要保存的第一個非空格字符,\1并且[^ ]*所有非空格字符都將被替換為其中的任何內容\1并/g表示執行全部,或者不要在一場比賽后停止。最后一個運算式是洗掉開頭的空格,在這種情況下不需要空格,因為echo的 args 將以非空格開頭,無論后面有多少空格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490594.html
