Bashスクリプトでコマンド出力形式を変更する

Bashスクリプトでコマンド出力形式を変更する

スクリプトから:を削除してから、印刷物から/を\に復元してみてください。

現在のLinuxパスを表示する必要があります。ホームディレクトリは次の場所にあります。rtp1-filer-ns:/homedir-private/private007/user

ユーザーがWindowsパスをホームディレクトリ(\ rtp1-filer-ns \ homedir-private \ private007 \ user)に簡単に設定できるように再フォーマットしたいと思います。

現在のスクリプト部分は次のとおりです。

echo "シェルは次のとおりです。 `ypmatch $EndUser passwd | awk -F\: '{ print $7 }'`"
エコ「」
echo "ホームディレクトリは次の場所にあります。"
   ypmatch $EndUser auto_home
エコ「」
echo "ホームディレクトリのWindowsパス:"
echo "\\\\`ypmatch $EndUser auto_home | awk -F':' '{print $1}' `\\$EndUser"

印刷してください:

デフォルトのディレクトリは次の場所にあります。
rtp1-filer-ns:/homedir-private/private007/user

Windowsホームディレクトリパス:
\\rtp1-filer-ns\ユーザー

sed /awkのようなものを使用できると仮定すると、$ EndUserは定義された変数です。

ベストアンサー1

そしてbash

最初の方法 - パラメータ置換の使用

#use command substitution to set command output into variable var
var=$(ypmatch $EndUser auto_home)
#strip out the first :
var=${var/:}
#replace all instances of / with \
var=${var//\//\\}
echo $var

rtp1-filer-ns\homedir-private\private007\user

2番目の方法 - 配列の使用

# Set path components into array frags
IFS=/ read -a frags < <(ypmatch $EndUser auto_home)

# Strip ":" off rtp1-filer-ns
frags[0]="${frags[0]%:}"

# Set IFS to \ to print frags \-separated
echo "$(IFS=\\ ;printf '%s\n' "${frags[*]}";)"

rtp1-filer-ns\homedir-private\private007\user

おすすめ記事