簡體   English   中英

Bash 腳本 - Python 找不到路徑

[英]Bash Script - Python can't find a path

請我需要幫助!

這是我的第一個 bash 腳本,它在某些時候調用了一個 python 腳本。 但我總是在第 28 和 40 行得到這個輸出:

./startTests.sh: line 28: 'logs/tp1/load-test1-workloada.txt': No such file or directory

目錄 logs/tp1確實存在 我認為這是我必須在那里使用字符 '>' 的東西,但我不知道如何解決它。

這是我的腳本:

#! /bin/bash

echo -e "\033[01;34m------------------------------"
echo -e "|      Testes YCSB 0.17      |"
echo -e "------------------------------\033[01;37m"

echo -e 'Está rodando o script da raiz do YCSB? (y/n)'
read yesno

if [ $yesno = 'y' ]; then
    echo -e 'Número de throughputs:'
    read numOfThroughputs

    echo -e 'Número de testes:'
    read numOfTests

    echo -e 'Iniciando...'

    for ((throughput = 1; throughput <= $numOfThroughputs; throughput++)); do
        echo -e '\033[01;32m------------------------------'
        echo -e "Throughput  $throughput "
        echo -e '------------------------------\033[01;37m'
        for ((test = 1; test <= $numOfTests; test++)); do
            echo -e '\033[01;32m------------------------------'
            echo -e "Iciando teste $test"
            echo -e '------------------------------\033[01;37m'
            echo -e 'Loading Workload A'
            python  ./bin/ycsb load mongodb-async -P workloads/workloada -p mongodb.url=mongodb://172.18.0.3:27017/ycsb?w=1 -P config/load.dat -s > "'logs/tp${throughput}/load-test${test}-workloada.txt'"

            for workload in {a,b,c,,f,d,e}; do
                if [ $workload = 'e' ]; then
                    echo -e "\033[01;33mPreparação para workload $workload"
                    echo -e "Apague o banco e precione QUALQUER TECLA 2X"
                    read enter
                    echo -e "Precione QUALQUER TECLA\033[01;37m"
                    read enter2
                    python  ./bin/ycsb load mongodb-async -P workloads/workloade -p mongodb.url=mongodb://172.18.0.3:27017/ycsb?w=1 -P config/load.dat -s > "'logs/tp${throughput}/load-test${test}-workloade.txt'"
                fi
                echo -e "Workload $workload"
                python  ./bin/ycsb run mongodb-async -P workloads/workload"${workload}" -p mongodb.url=mongodb://172.18.0.3:27017/ycsb?w=1 -P config/runtp"${throughput}".dat -s > ""'logs/tp${throughput}/run-test${test}-workload${workload}.txt'"
            done
            echo -e "\033[01;32mTeste $test finalizado!"
            echo -e "\033[01;33mApague o banco e precione QUALQUER TECLA 2X"
            read enter
            echo -e "Precione QUALQUER TECLA\033[01;37m"
            read enter2
        done
    done
fi

去掉雙引號內的單引號。

> "'logs/tp${throughput}/load-test${test}-workloada.txt'"

將文字單引號放在路徑名中,因為單引號在雙引號內沒有特殊含義。 那應該是

> "logs/tp${throughput}/load-test${test}-workloada.txt"

你也有這個在后面的行:

> ""'logs/tp${throughput}/run-test${test}-workload${workload}.txt'"

這在開頭有一個額外的" ,這使得引號不平衡。它應該是:

> "logs/tp${throughput}/run-test${test}-workload${workload}.txt"

ogs/tp1 可能存在,但這與“logs/tp1/”不同。 您應該刪除單引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM