我有一个交互式 Bash 脚本conozcoArrays.sh
,,
#!/usr/bin/bash
echo -e "\nGive me their phone number?\n"
read number
TOGOes=("$(find ~/chicas -maxdepth 1 -iname "*$number*" -type d -execdir echo {} + | sed "s;./;${HOME}/chicas/;g")"
"$(find ~/chulos -maxdepth 1 -iname "*$number*" -type d -execdir echo {} + | sed "s;./;${HOME}/chulos/;g")"
"$(find ~/parejas -maxdepth 1 -iname "*$number*" -type d -execdir echo {} + | sed "s;./;${HOME}/parejas/;g")"
)
for togo in "${TOGOes[@]}"
do
if [[ $togo != "" ]]; then
echo $togo
export togo && cd $togo && return 0
else
echo "Haven't found her in my directories." && cd ~/chicas
fi
done
在我的目录中搜索关键字,如果找到任何内容,它会更改到该目录。出于这个原因,我通常会启动它采购它,就像这样
. ~/CS/SoftwareDevelopment/MySoftware/Bash/pasion/conozcoArrays.sh
我还有另一个 Bash 脚本,todo.sh
它引用了“conozcoArrays.sh”:
#!/usr/bin/bash
ita='\e[3m'
end='\e[0m'
echo -e "1. La conozco?
2. Search through websites for a given phone number and create a dossier.
3. {ita}escort-scraper.py{end}"
read ch
if [[ "${ch}" == '1' ]]; then
. ~/CS/SoftwareDevelopment/MySoftware/Bash/pasion/conozcoArrays.sh
elif [[ "${ch}" == '2' ]]; then
"${HOME}/CS/SoftwareDevelopment/MySoftware/Python/escorts/search-no.py"
elif [[ "${ch}" == '3' ]]; then
"${HOME}/CS/SoftwareDevelopment/MySoftware/Python/escorts/escort-scraper.py"
fi
问题是,当我输入1
conozcoArrays.sh
未被评估时,它已启动但似乎没有来源 - 我希望在脚本todo.sh
完成后位于不同的目录中,但我没有。我如何conozcoArrays.sh
从另一个交互式脚本中获取资源?
正如您所说,您的脚本已启动,也正如您所说,它不是源代码,因为您不是在源代码,而是在执行它。这意味着该脚本确实会更改目录,但仅限于它运行时。当脚本退出时,您的原始 shell 没有移动目录。
如果您希望
cd
脚本中的命令影响父 shell,即您从中启动脚本的交互式 shell,则需要获取它。因此,与其运行todo.sh
,不如获取它:然后它将按照您的意愿行事。