我的隊友之前在unix SE上問過這個問題,但他問的是錯誤的。他也沒有得到正確的答案。在bash中每個字母定義變量的回聲不同
無論如何,我試圖讓我的bash腳本處理變量中的每個字符,並且每個字母都回顯特定的字符串,直到達到最後。這是我到目前爲止有:
#!/bin/bash
echo Word?
read -r -p '' foo
# $foo is set to 'Mammals and Bricks' by user.
wordlength=${#foo}
$wordlength says 18, so start on character 1.
'M' is first letter received in $foo, so echo '{m,M}'
'a' is second letter received in $foo, so echo '{a,A}'
'm' is third letter received in $foo, so echo '{m,M}'
'm' is fourth letter received in $foo, so echo '{m,M}'
'a' is the fifth letter received in $foo, so echo '{a,A}'
'l' is the sixth letter received in $foo, so echo '{l,L}'
's' is the seventh letter received in foo, so echo '{s,S}'
' ' is the eighth, so echo '\ '
........
'c' is sixteenth letter received in $foo, so echo '{c,C}'
'k' is seventeenth letter received in $foo, so echo '{k,K}'
's' is eighteenth letter received in $foo, so echo '{s,S}'
這裏是它會是什麼樣子對用戶端:
Word?
哺乳動物和磚
{m,M}{a,A}{m,M}{m,M}{a,A}{l,L}{s,S} {a,A}{n,N}{d,D} {b,B}{r,R}{i,I}{c,C}{k,K}{s,S}
哪個會是什麼輸出恰好爲。你會看到所有上面的原始字符。
任何人都知道如何做到這一點?
嗯......當我跑我的輸出是這樣的:'{LM,UM} {LA,UA} {LM ,um} {lm,um} {la,ua} {ll,ul} {ls,us} {la,ua} {ln,un} {ld,ud} {lB,uB} {lr,ur} {li ,UI} {LC,UC} {LK,英國} {LS,我們}'。我使用OS X Yosemite btw – leetbacoon
然後你可能使用的是經典的sed,而不是GNU sed(注意GNU sed可能在OSX上可用)。我在純bash中添加了一個解決方案。 – xhienne
@xhienne不幸的是,'$ {var,}'和'$ {var ^}'構造是在bash v4中添加的,但是macOS只隨bash v3.2.57一起發佈。 (這是因爲bash v4是根據GPL v3獲得許可的,蘋果不想遵守。) –