此问题在此处已有答案:
Are shell scripts sensitive to encoding and line endings?(16个回答)
7天前关闭
我是sh脚本的新手,我想做一些事情。我想自动化我的交付(最后一步是标记),我真的不知道怎么做。我尝试了一些事情,但我有一个问题
我想要的:
- 我有一个文件与回购网址和文件夹在哪里拉. ex:
https://gitlab.toto.com/api_tata|api_tata
https://gitlab.toto.com/frontend_tata|frontend_tata
字符串
我想在每个仓库循环,拉上发布分支,更改版本号,与主分支合并。
第一步我尝试了类似的东西(在本地克隆一个repo来执行合并和推送)
#!/bin/bash
PROJECTS_LIST="projects.txt"
DIRBASE="."
cd "$DIRBASE"
if [ ! -f "$PROJECTS_LIST" ]; then
echo "The projects file ($PROJECTS_LIST) does not exist."
read -p "Press Enter to exit..."
exit 1
fi
while IFS=';' read -r REPO DIR || [[ -n "$REPO" ]]; do
echo "Repo: $REPO"
echo "DIR: $DIR"
if [ -z "$REPO" ] || [ -z "$DIR" ]; then
echo "Invalid format in the line: $REPO;$DIR"
continue
fi
read -p "Press Enter to clone the repository..."
# clone repo
git clone "$REPO" "$DIR"
if [ $? -eq 0 ]; then
echo "Cloning successful."
else
echo "Cloning failed."
fi
read -p "Press Enter to continue..."
done < "$PROJECTS_LIST"
型
这里是我输入的日志和错误:
Repo: https://gitlab.toto.com/api_tata
DIR: api_tata
fatal: could not create work tree dir 'api_tata?': Invalid argument
Cloning failed.
型
我不知道为什么我在API_tata后面有这个“?”字符?
如果你能帮我的话?
谢谢你,谢谢
1条答案
按热度按时间brvekthn1#
这可能意味着
DIR
以一个不可见的字符结尾。根据我的经验,它通常是一个回车符(\r
)。通过在某处添加此来确认它
字符串
它转储不可见的内容(注意API_tata后面的
\r
)型
然后使用
tr
中的任意一个更正DIR
以删除特定字符型
或删除除已接受符号外的所有符号
型