如何解决UNIX:如何移动文件夹内的所有文件而不需要二元运算符
我有 bash unix 脚本将所有文件从文件夹移动到另一个文件夹。 但是,当源文件夹中的文件超过 1 个时,它总是给我预期的二进制操作。
我的代码是这样的
//+ setUp the hashMap with binding
fun setUpEditTextsMap() {
this.mEditTexts = HashMap<EditText,String?>()
editTexts[binding.editText1] = null
editTexts[binding.editText2] = null
..
}
//+ setUp editTexts values when you want
fun setUpEditTextValues() {
mEditTexts.entries.forEach { it ->
mEditTexts[it.key] = it.key.text?.toString()
}
}
我正在使用 if 方法来检查那里是否有数据,所以它会显示成功错误 但是,当 MYTH 文件夹中只有一个数据时,我使用的这段代码很好,但是当它有多个数据时,我会得到这样的错误输出
#Variable
NAS_MYTH=/cd/myth_extfile/shyn/
NAS_SHYN=/cd/shyn/MYTH/*
#Script
echo " Move file SHYN to NAS MYTH : $NAS_MYTH"
if [ -f $NAS_SHYN ]; then
mv $NAS_SHYN $NAS_MYTH
echo "Success: moving files to $NAS_MYTH"
else
echo "Success : No files need to be moved"
fi
谁能帮帮我?谢谢。
更新
都解决了,我现在用这个代码
Move file SHYN to NAS MYTH : /cd/myth_extfile/shyn/
./mv_shyn_files.sh: line 52: [: /cd/shyn/MYTH/FAQ - MYTH.pdf: binary operator expected
Sucess : No file need to be move
谢谢大家帮助我 :D
解决方法
NAS_SHYN=/cd/shyn/MYTH/*
将文字 *
分配给 NASH_SHYN
。但是,当您编写不带引号的 $NAS_SHYN
时,*
将扩展为文件列表,然后通过在空格处拆分文件名将这些文件扩展为单词列表。在您的情况下,似乎只有一个文件,即 FAQ - MYTH.pdf
。但是,该文件中有空格,因此 bash 会将您的文件名拆分为多个单词,从而导致错误。
相反,使用数组并引用您的变量。
shopt -s nullglob
NAS_SHYN=(/cd/shyn/MYTH/*)
if [ "${#NAS_SHYN[@]}" != 1 ]; then
echo "expected one match but found ${#NAS_SHYN[@]}"
exit 1
fi
echo "The only match is ${#NAS_SHYN[0]}"
if [ -f "${NAS_SHYN[0]}" ]; then
…
顺便说一下,ALLCAPS 变量是约定俗成的特殊变量或环境变量。为避免意外的名称冲突,请改用小写变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。