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 "3[01;34m------------------------------"
echo -e "| Testes YCSB 0.17 |"
echo -e "------------------------------3[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 '3[01;32m------------------------------'
echo -e "Throughput $throughput "
echo -e '------------------------------3[01;37m'
for ((test = 1; test <= $numOfTests; test++)); do
echo -e '3[01;32m------------------------------'
echo -e "Iciando teste $test"
echo -e '------------------------------3[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 "3[01;33mPreparação para workload $workload"
echo -e "Apague o banco e precione QUALQUER TECLA 2X"
read enter
echo -e "Precione QUALQUER TECLA3[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 "3[01;32mTeste $test finalizado!"
echo -e "3[01;33mApague o banco e precione QUALQUER TECLA 2X"
read enter
echo -e "Precione QUALQUER TECLA3[01;37m"
read enter2
done
done
fi
ogs/tp1 可能存在,但这与 'logs/tp1/' 不同。
您应该删除单引号。
去除双引号内的单引号。
> "'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"
拜托,我需要帮助!
这是我的第一个 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 "3[01;34m------------------------------"
echo -e "| Testes YCSB 0.17 |"
echo -e "------------------------------3[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 '3[01;32m------------------------------'
echo -e "Throughput $throughput "
echo -e '------------------------------3[01;37m'
for ((test = 1; test <= $numOfTests; test++)); do
echo -e '3[01;32m------------------------------'
echo -e "Iciando teste $test"
echo -e '------------------------------3[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 "3[01;33mPreparação para workload $workload"
echo -e "Apague o banco e precione QUALQUER TECLA 2X"
read enter
echo -e "Precione QUALQUER TECLA3[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 "3[01;32mTeste $test finalizado!"
echo -e "3[01;33mApague o banco e precione QUALQUER TECLA 2X"
read enter
echo -e "Precione QUALQUER TECLA3[01;37m"
read enter2
done
done
fi
ogs/tp1 可能存在,但这与 'logs/tp1/' 不同。 您应该删除单引号。
去除双引号内的单引号。
> "'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"