`exec 6>&1`または同様の機能は何をしますか?

`exec 6>&1`または同様の機能は何をしますか?

一部のソフトウェアをUnixからLinuxに移行しています。

次のスクリプトがあります。これはファイル転送のためのトリガーです。

コマンドは何をしますかexec

Linuxでも実行できますか?

#!/bin/bash
flog=/mypath/log/mylog_$8.log
pid=$$
flog_otherlog=/mypath/log/started_script_${8}_${pid}.log

exec 6>&1
exec 7>&2
exec >> $flog
exec 2>&1


exec 1>&6 
exec 2>&7

/usr/local/bin/sudo su - auser -c "/mypath/bin/started_script.sh $1 $pid $flog_otherlog $8" 

起動スクリプトは次のとおりです。

#!/bin/bash
flusso=$1
pidpadre=$2
flogcurr=$3
corrid=$4
pid=$$

exec >> $flogcurr
exec 2>&1

if  [ $1 = pippo ] || [ $1 = pluto ] || [ $1 = paperino ]
    then
        fullfile=${myetlittin}/$flusso
        filename="${flusso%.*}"
        datafile=$(ls -le $fullfile  | awk '{print $6, " ", $7, " ", $9, " ", $8 }')
        dimfile=$(ls -le $fullfile  | awk '{print $5 " " }')
        aaaammgg=$(ls -E $fullfile  | awk '{print $6}'| sed 's#-##g')
        aaaamm=$(echo $aaaammgg | cut -c1-6)
        dest_dir=${myetlwarehouse}/mypath/${aaaamm}
        dest_name=${dest_dir}/${filename}_${aaaammgg}.CSV
        mkdir -p $dest_dir
        cp $fullfile $dest_name
        rc_copia=$?
fi

私はLinuxにls -le変えてls -l --time-style="+%b %d %T %Y"また変えますls -Els -l --time-style=full-isoand

ベストアンサー1

exec [n]<&word入力ファイル記述子は bash にコピーされます。

exec [n]>&word出力ファイル記述子は bash にコピーされます。

3.6.8を参照してください。https://www.gnu.org/software/bash/manual/html_node/Redirections.html

ただし、パラメータの順序は混乱する可能性があります。

スクリプトから:

  • exec 6>&11ファイル記述子(STDOUTなど)のコピーを作成し、それをファイル記述子として保存します6

  • exec 1>&66もう一度コピーしてください1

    ダッシュを追加して移動することも可能です。つまり、1<&6-記述子を閉じて6保持するだけです1

その間には通常、サブシェルなどでSTDOUTとSTDINに書き込むことがあります。

また見なさい:ファイル記述子移動の実際の使用

おすすめ記事