シェルスクリプトはファイルに何も出力しません。

シェルスクリプトはファイルに何も出力しません。

私はGoogle翻訳を使用して文章/文書を混在させる小さなプログラムを作成しようとしています。出力ファイルはわずか3バイトで、何も含めないようです。

trans翻訳コマンドを使用しています。

スクリプトの最初の部分:

#!/bin/bash
LANG="en"
CONTINUE=2
cd /root && CONTINUE=1
#Language Randomizer
function rl(){
    LANGNUM=$(shuf -i 1-81 -n1)
    
    if [[ $LANGNUM -eq 1 ]]
    then
        LANG="af"
    fi
    if [[ $LANGNUM -eq 2 ]]
    then
            LANG="am"
    fi
    if [[ $LANGNUM -eq 3 ]]
    then
            LANG="ar"
    fi
    if [[ $LANGNUM -eq 4 ]]
    then
            LANG="az"
    fi
    if [[ $LANGNUM -eq 5 ]]
    then
            LANG="ba"
    fi
    if [[ $LANGNUM -eq 6 ]]
    then
            LANG="be"
    fi
    if [[ $LANGNUM -eq 7 ]]
    then
            LANG="bg"
    fi
    if [[ $LANGNUM -eq 8 ]]
    then    
            LANG="bn"
    fi
    if [[ $LANGNUM -eq 9 ]]
    then
            LANG="bs"
    fi
    if [[ $LANGNUM -eq 10 ]]
    then
            LANG="ca"
    fi
    if [[ $LANGNUM -eq 11 ]]
    then
        LANG="ceb"
    fi
    if [[ $LANGNUM -eq 12 ]]
    then
            LANG="co"
    fi
    if [[ $LANGNUM -eq 13 ]]
    then
            LANG="cs"
    fi
    if [[ $LANGNUM -eq 14 ]]
    then
            LANG="cy"
    fi
    if [[ $LANGNUM -eq 15 ]]
    then
            LANG="da"
    fi
    if [[ $LANGNUM -eq 16 ]]
    then
            LANG="de"
    fi
    if [[ $LANGNUM -eq 17 ]]
    then
            LANG="el"
    fi
    if [[ $LANGNUM -eq 18 ]]
    then    
            LANG="emj"
    fi
    if [[ $LANGNUM -eq 19 ]]
    then
            LANG="eo"
    fi
    if [[ $LANGNUM -eq 20 ]]
    then
            LANG="es"
    fi
    if [[ $LANGNUM -eq 21 ]]
    then
        LANG="et"
    fi
    if [[ $LANGNUM -eq 22 ]]
    then
            LANG="eu"
    fi
    if [[ $LANGNUM -eq 23 ]]
    then
            LANG="fa"
    fi
    if [[ $LANGNUM -eq 24 ]]
    then
            LANG="fi"
    fi
    if [[ $LANGNUM -eq 25 ]]
    then
            LANG="fj"
    fi
    if [[ $LANGNUM -eq 26 ]]
    then
            LANG="fr"
    fi
    if [[ $LANGNUM -eq 27 ]]
    then
            LANG="fy"
    fi
    if [[ $LANGNUM -eq 28 ]]
    then    
            LANG="ga"
    fi
    if [[ $LANGNUM -eq 29 ]]
    then
            LANG="gd"
    fi
    if [[ $LANGNUM -eq 30 ]]
    then
            LANG="gl"
    fi
    if [[ $LANGNUM -eq 31 ]]
    then
        LANG="gu"
    fi
    if [[ $LANGNUM -eq 32 ]]
    then
            LANG="ha"
    fi
    if [[ $LANGNUM -eq 33 ]]
    then
            LANG="haw"
    fi
    if [[ $LANGNUM -eq 34 ]]
    then
            LANG="he"
    fi
    if [[ $LANGNUM -eq 35 ]]
    then
            LANG="hi"
    fi
    if [[ $LANGNUM -eq 36 ]]
    then
            LANG="hmn"
    fi
    if [[ $LANGNUM -eq 37 ]]
    then
            LANG="hr"
    fi
    if [[ $LANGNUM -eq 38 ]]
    then    
            LANG="ht"
    fi
    if [[ $LANGNUM -eq 39 ]]
    then
            LANG="hu"
    fi
    if [[ $LANGNUM -eq 40 ]]
    then
            LANG="hy"
    fi
    if [[ $LANGNUM -eq 41 ]]
    then
        LANG="id"
    fi
    if [[ $LANGNUM -eq 42 ]]
    then
            LANG="ig"
    fi
    if [[ $LANGNUM -eq 43 ]]
    then
            LANG="is"
    fi
    if [[ $LANGNUM -eq 44 ]]
    then
            LANG="it"
    fi
    if [[ $LANGNUM -eq 45 ]]
    then
            LANG="ja"
    fi
    if [[ $LANGNUM -eq 46 ]]
    then
            LANG="jv"
    fi
    if [[ $LANGNUM -eq 47 ]]
    then
            LANG="ka"
    fi
    if [[ $LANGNUM -eq 48 ]]
    then    
            LANG="kk"
    fi
    if [[ $LANGNUM -eq 49 ]]
    then
            LANG="km"
    fi
    if [[ $LANGNUM -eq 50 ]]
    then
            LANG="kn"
    fi
    if [[ $LANGNUM -eq 51 ]]
    then
        LANG="ko"
    fi
    if [[ $LANGNUM -eq 52 ]]
    then
            LANG="ku"
    fi
    if [[ $LANGNUM -eq 53 ]]
    then
            LANG="ku"
    fi
    if [[ $LANGNUM -eq 54 ]]
    then
            LANG="la"
    fi
    if [[ $LANGNUM -eq 55 ]]
    then
            LANG="lb"
    fi
    if [[ $LANGNUM -eq 56 ]]
    then
            LANG="lo"
    fi
    if [[ $LANGNUM -eq 57 ]]
    then
            LANG="lt"
    fi
    if [[ $LANGNUM -eq 58 ]]
    then    
            LANG="lv"
    fi
    if [[ $LANGNUM -eq 59 ]]
    then
            LANG="mg"
    fi
    if [[ $LANGNUM -eq 60 ]]
    then
            LANG="mhr"
    fi
    if [[ $LANGNUM -eq 61 ]]
    then
        LANG="mi"
    fi
    if [[ $LANGNUM -eq 62 ]]
    then
            LANG="mk"
    fi
    if [[ $LANGNUM -eq 63 ]]
    then
            LANG="ml"
    fi
    if [[ $LANGNUM -eq 64 ]]
    then
            LANG="mn"
    fi
    if [[ $LANGNUM -eq 65 ]]
    then
            LANG="mr"
    fi
    if [[ $LANGNUM -eq 66 ]]
    then
            LANG="mrj"
    fi
    if [[ $LANGNUM -eq 67 ]]
    then
            LANG="ms"
    fi
    if [[ $LANGNUM -eq 68 ]]
    then    
            LANG="mt"
    fi
    if [[ $LANGNUM -eq 69 ]]
    then
            LANG="mww"
    fi
    if [[ $LANGNUM -eq 70 ]]
    then
            LANG="my"
    fi
    if [[ $LANGNUM -eq 71 ]]
    then
        LANG="ne"
    fi
    if [[ $LANGNUM -eq 72 ]]
    then
            LANG="nl"
    fi
    if [[ $LANGNUM -eq 73 ]]
    then
            LANG="no"
    fi
    if [[ $LANGNUM -eq 74 ]]
    then
            LANG="ny"
    fi
    if [[ $LANGNUM -eq 75 ]]
    then
            LANG="otq"
    fi
    if [[ $LANGNUM -eq 76 ]]
    then
            LANG="pa"
    fi
    if [[ $LANGNUM -eq 77 ]]
    then
            LANG="pap"
    fi
    if [[ $LANGNUM -eq 78 ]]
    then    
            LANG="pl"
    fi
    if [[ $LANGNUM -eq 79 ]]
    then
            LANG="ps"
    fi
    if [[ $LANGNUM -eq 80 ]]
    then
            LANG="pt"
    fi
    if [[ $LANGNUM -eq 81 ]]
    then
            LANG="ro"
    fi
}

2番目の部分:

if [[ $CONTINUE -eq 2 ]]
then
    exit
fi
cd ~/
echo "Please Enter Path To The File To Be Translated"
read IFILE
echo "Please Enter Name For Output"
read OFILE
rl
sudo trans :$LANG file://$IFILE > /root/TransHistory142.txt
while  [[ $X -le 10 ]]
do
    rl
    sudo trans :$LANG file:///root/TransHistory142.txt > /root/TransHistory141.txt
    rl
    sudo trans :$LANG file:///root/TransHistory141.txt > /root/TransHistory142.txt
    ((X++))
done


sudo trans :en file:///root/TransHistory142.txt > /home/$OFILE
echo "Saved To /home/$OFILE "

答え1

質問で唯一関連した行はですsudo trans :en file:///root/TransHistory142.txt > /home/$OFILE。スクリプトの実行がファイルの対応する行に達すると〜する作成され、その内容は〜するコマンドの標準出力に置き換えられました。 Bashはコマンドが実行される前にファイルを作成/空にするため、これがsudo存在するのか、trans有効なコマンドなのか、file:///root/TransHistory142.txt存在するのか、コマンドが成功したのかは関係ありません。

答え2

>演算子を使用してテキストファイルに書き込むようです。これにより、ファイル内の既存のデータが上書きされます。>>を使用してファイルにデータを追加することもできます。

関連情報