2017-04-26 11 views
0

を使用して置き換える私は仕事に私のコードを取得する問題を抱えている:バッシュは、組み込み(SEDではない!)を検索し、進値

for ((c=1; c<=$DirsArrCnt; c=c+$OneDirArrCnt)); do 
    # Replace every occurence of "/" (ASCII d47 o057) in path with "^A" (ASCII 1) 
    Hold="${DirsArr[$c]}" 
    DirsArr[c]="${Hold//\057/\001}" 
done 

もともと私はホールド変数をスキップし、直接配列要素を使用するが、それを取り出しましたそれが問題だと思った。

私は8進値を正しく指定していますか?私は57が "/"の8進値であると信じていますか?

答えて

1

私は、これはあなたが欲しいものだと思う:

DirsArr[c]="${Hold//$'\057'/$'\001'}" 

あなたは(すなわち、バックスラッシュを使用していないとは異なる何もしない)リテラル0として\0解釈を使用する構文。あなたの数値コードをシェルが解釈するには、Cスタイルの文字列が必要です。

+0

素晴らしい。ディレクトリ名(配列キー)の私のエコーはそれでなければならない '/'の代わりに面白い文字として表示されます。迅速な答えをありがとう:) – WinEunuuchs2Unix

関連する問題