Bash

使用 at 命令執行腳本並不完全有效

  • February 20, 2019

所以我做了一個 bash 腳本,它讀取一個包含目錄號的文件,然後繼續在它們上執行 pgloader。

我看起來像這樣

#create logs for pgloader
Date=`date +%Y_%m_%d`
LOGS="pgloader_logs_$Date"

touch "$LOGS"

echo "loading files from dat folder"
echo "--------------------------------"
pgloader dat/*.load 2> "$LOGS"

#Read brand numbers from input file
while IFS='' read -r line || [[ -n "$line" ]]; do
#check if dlnr is valid
dlnr=$line
 if [[ $dlnr == ???? ]]; then

    echo "loading files from $dlnr folder"
    echo "--------------------------------"

    pgloader $dlnr/*.load 2>> "$LOGS"
 fi
done < "$1"

exit 1

我執行它的目錄看起來像

0002 0005 0021 ... setUpDB.sh brandsnr

我使用它執行它echo "./setUpDB.sh brandsnr >> someFileToGetTheOutput" | at TIME

問題是由於某種原因它永遠不會在一段時間內執行。at 命令不能讀取文件嗎?因為我嘗試使用帶有數字增量的 for 循環而不是從文件中讀取,但它也沒有在其中執行……

當我自己執行該腳本時,它可以完美執行。我只需要能夠在一夜之間啟動它…

沒關係,我只是愚蠢。我認為它使用錯誤的 bash 執行,因此[[無法辨識。

添加#!/bin/bashshebang似乎可以糾正它。

我只是忘記了>>只有重定向stdout,因此找不到任何錯誤。

引用自:https://unix.stackexchange.com/questions/501798