Bash - 配列を変数に文字列として割り当てる

Bash - 配列を変数に文字列として割り当てる

このコードがあり、正しい結果が印刷されますが、最後の行のエコーを変数にインポートする方法がわかりません。

# hostname is 'tech-news-blog-324344' . Setting it into array host_name_array
IFS='-' read -r -a host_name_array <<< "$(hostname)" 
#removing the last part of string after last "-"
unset 'host_name_array[${#host_name_array[@]}-1]'
( IFS=$'-'; echo "${host_name_array[*]}" )  
#result is 'tech-news-blog'

最後の行の値を変数にどのように入れることができますか?私は以下を試しました:

( IFS=$'-'; URL="${host_name_array[*]}" )

しかし、私が得た結果は、「-」の代わりにアレイ間にスペースがある「Technology News Blog」です。

ベストアンサー1

実行時のIFS='-' read -r -a host_name_array <<< "$(hostname)"配列は(tech news blog 324344)

最後の要素を削除した後の unset 'host_name_array[${#host_name_array[@]}-1]'配列はです(tech news blog)

したがって、echoを取得するには、次tech-news-blogのようにいくつかの代替が必要です。echo "${host_name_array[*]}"tech news blog

trで:echo "${host_name_array[*]}" | tr ' ' '-'

sed:echo "${host_name_array[*]}" | sed 's/ /-/g'

おすすめ記事