2017-12-10 11 views
-1

複数のコマンドを実行するために、エイリアスや文字列を使用してだから私は文字列を取り、これは私がこれまで持っているものであるコマンドのリストにそれを作るための方法を探している:

#!/bin/bash 
shopt -s nocasematch extglob expand_aliases 
    alias V='alias' 
    V a="echo "hi"" 
    V b="echo "bye"" 
    V c="echo "say"" 
function test() { 
    tt=$(echo acbacbcab | fold -w1) 
    echo "$tt" 
} 
    test 

私が手に出力します

a 
c 
b 
a 
c 
b 
c 
a 
b 

である私が欲しいの出力は、あなたがこれを助けることができれば

hi 
say 
bye 
hi 
say 
bye 
say 
hi 
bye 

はそれは素晴らしいことだである私はevalのA試してみました最初のエイリアスを手に入れることができるのは手紙だけだったし、xargsを使うと言っている人がたくさんいました。私は彼らの仕事の仕方に立っていなかったし、何もしなかった彼らがしたいと思った。

+0

。 IFS = read -r -n 1 fooです。 eval "$ foo"を実行します。 done <<< "$ c"; } '。 – Cyrus

答えて

0

は私が機能を使用することをお勧め:

#!/bin/bash 
a() { echo "hi"; } 
b() { echo "bye"; } 
c() { echo "say"; } 

mytest() { 
    c="acbacbcab" 
    while IFS= read -r -n 1 foo; do 
    $foo 
    done <<< "$c" 
} 

mytest 

出力:私は機能テスト{= "acbacbcab" C `を使用して機能テストを交換することをお勧め

 
hi 
say 
bye 
hi 
say 
bye 
say 
hi 
bye