#!/data/data/com.termux/files/usr/bin/bash
basedir=$(dirname "$0")
#unset LD_PRELOAD in case termux-exec is installed. If termux-exec is also installed inside the jail it will set again.
unset LD_PRELOAD
command="proot"
command =" -r $basedir/termux-fs"
command =" -b /system"
command =" -b /dev/"
command =" -b /sys/"
command =" -b /etc/"
command =" -b /proc/"
command =" -b /vendor"
command =" -b /data/dalvik-cache/"
command =" -b /property_contexts"
if [ -n "$(ls -A "$basedir"/binds)" ]; then
for f in $basedir/binds/* ;do
. "$f"
done
fi
command =" -w /data/data/com.termux/files/home/"
command =" /data/data/com.termux/files/usr/bin/env -i"
command =" HOME=/data/data/com.termux/files/home"
command =" PATH=/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets"
command =" TERM=$TERM"
command =" ANDROID_DATA=/data"
command =" ANDROID_ROOT=/system"
command =" EXTERNAL_STORAGE=/sdcard"
command =" LANG=$LANG"
command =" LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib"
command =" PREFIX=/data/data/com.termux/files/usr"
command =" TMPDIR=/data/data/com.termux/files/usr/tmp"
com="$@"
if [ -z "$com" ];then
eval "exec $command login"
else
eval "exec $command login -c "$com""
fi
錯誤
./start.sh: line 39: unexpected EOF while looking for matching `"'
./start.sh: line 41: syntax error: unexpected end of file
每個雙引號都關閉了為什么它不斷拋出錯誤嘗試通過 sh 而不是 bash 但仍然錯誤
它還在 command =" -b /system" 上顯示關于關閉雙引號的錯誤 誰能解釋一下?
uj5u.com熱心網友回復:
你不需要eval. 使用陣列來存盤命令的引數。
#!/data/data/com.termux/files/usr/bin/bash
basedir=$(dirname "$0")
#unset LD_PRELOAD in case termux-exec is installed. If termux-exec is also installed inside the jail it will set again.
unset LD_PRELOAD
command="proot"
command_args=(
-r "$basedir/termux-fs"
-b /system
# etc
)
command_args =(-b /property_contexts)
shopt -s nullglob
for f in "$basedir"/binds/*; do . "$f"; done
command_args =(
-w /data/data/com.termux/files/home/
/data/data/com.termux/files/usr/bin/env -i
HOME=/data/data/com.termux/files/home
PATH=/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets
"TERM=$TERM"
# etc
login
)
if (( $# == 0 )); then
command_args =( -c "$@" )
fi
exec "$command" "${command_args[@]}"
uj5u.com熱心網友回復:
重新檢查字串:
eval "exec $command login -c "$com""
你必須在 shell 中轉義雙引號。
https://unix.stackexchange.com/questions/30903/how-to-escape-quotes-in-shell
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/359474.html
上一篇:如何從目錄中洗掉除未版本控制的git檔案之外的所有檔案?
下一篇:bash:彩色輸出不會停止
