CSVブックマークファイルを次にエクスポートしたいと思います。
Physics,physics.stackexchange.com
Stack Overflow,stackoverflow.com
Unix & Linux,unix.stackexchange.com
2 つの Bash 配列に分割されます。各配列にはファイルの1列が含まれています。最初の配列は
"Physics" "Stack Overflow" "Unix & Linux"
空白の処理に問題があります。cut
このように使ってみよう
declare names=($(cut -d ',' -f1 ~/bookmarks.csv))
すべての単語が分離された配列を作成します。たとえばecho ${names[1]}
、
Stack
まさか
Stack Overflow
ベストアンサー1
Stack Overflow
空白があるため、配列に割り当てると2つの異なる変数として扱われます。BASH
他のシェル(など)でも、KSH
変数名にスペースを含めることはできないため、変数をStack Overflow
一重引用符または二重引用符で囲んでも機能しません。
次のコマンドを使用してこれを確認できます。
export Stack Overflow=name
echo $Stack Overflow
実際、出力は$ Stack(まだ値が宣言または割り当てられていません)Overflow
の引数と単語になります。echo
Overflow
echo $Overflow
これは、その値を変数に割り当てるコマンドをname
使用して出力されます。export
Stack
Overflow=name
次のいずれかを試している場合:
export "Stack Overflow'=name
export 'Stack Overflow'=name
エラー-bash: export: Stack Overflow=name': not a valid identifier
またはが表示されます-bash: export: Stack Overflow=name': not a valid identifier
。
あなたができることの1つは、2つの文字列の間に下線を付けることです:
export Stack_Overlow=name
これによりecho $Stack_Overflow
出力が得られますname
。 CSVファイルの内容にスペースが含まれているため、より多くの作業が必要です。