bash:cutコマンドは結果を生成しません(空白行のみが表示されます)。

bash:cutコマンドは結果を生成しません(空白行のみが表示されます)。

文字列の一部をエコーできません。

簡略化されたバージョンは次のとおりです。

t=no_1187985:/home/my.name/testing/no

no_1187985をエコーし​​たいです。

tt=$(echo $t | cut -d":" -f 1)
echo $tt

ただし、これは空白のみを生成します(実際のスクリプトではコマンドエラーは見つかりません)。

-f 1を-f 2に変更すると、2番目のフィールドでは機能しますが、なぜ最初のフィールドでは機能しないのか理解できません。

これはコンテキストの実際のコードの一部です。

while read line;
    do
        #echo $line
        #sleep 1
        path=$(dirname "$line")
        #echo $path
        #mkdir -p $(echo $path | cut -d":" -f 2)
        inode= $(echo $path | cut -d":" -f 1)
        echo $inode
        #mv ~/deleted/$inode $(echo $line | cut -d":" -f 2);
    done < .temp

ごみ箱を作成しようとしています。 temp は、「復元」する他のファイルのパス名を含むファイルです。各行を繰り返します。ファイルをディレクトリツリーに戻す前に、ディレクトリツリーを再作成します。ファイルは現在削除されているフォルダに保存され、最後に対応するinode番号が追加されています。ファイルが「復元」(つまり、戻る)になると、ファイル名からinodeが削除されます。

.tempファイルにはファイル名(元のファイル名とinodeの組み合わせ)と元のパス名が含まれており、両方とも「:」区切り文字で区切られています。

ベストアンサー1

=変数代入記号の周りにスペースを入れないでください。

シーン1:

  • inode = something- bashはinode2つの引数を使用してコマンドを実行しようとします。
  • これは次のように言うのと同じです。inode "=" "something"

シナリオ 2:

  • inode =somethinginode- bash は、1 つの引数 (string) という名前の'=something'コマンドを実行しようとします。
  • これは次のように言うのと同じです。inode "=something"

シーン3:

  • inode= somethingsomething– bash は、環境がinode空の文字列に設定された状態でコマンドを実行しようとします。
  • これは次のように言うのと同じです。inode="" something

ノート:確認部分2.9.1 簡単なコマンド下記の参考文献から。

引用:シェルコマンド言語

おすすめ記事