Bash 用cat处理file.txt中的空格
我试图从一个文件创建一个文件路径列表,但我似乎无法绕过文件路径中的空格Bash 用cat处理file.txt中的空格,bash,spaces,cat,Bash,Spaces,Cat,我试图从一个文件创建一个文件路径列表,但我似乎无法绕过文件路径中的空格 # Show current series list PS3="Type a number or 'q' to quit: " # Create a list of files to display Current_list=`cat Current_series_list.txt` select fileName in $Current_list; do if [
# Show current series list
PS3="Type a number or 'q' to quit: "
# Create a list of files to display
Current_list=`cat Current_series_list.txt`
select fileName in $Current_list; do
if [ -n "$fileName" ]; then
Selected_series=${fileName}
fi
break
done
当前_系列列表中的文件路径为:/Volumes/Lara硬盘/Lara硬盘/series/The Big Bang Theory 3/The.Big.Bang.Theory S03E11.avi
及
/卷/劳拉硬盘/劳拉硬盘/系列/nakitaS03E11.avi
所以我希望它们在我的列表中分别是1和2,但是我得到了以下结果
1) /Volumes/Lara's 6) Big
2) Hard 7) Bang
3) Drive/LARA 8) Theory
4) HARD 9) 3/The.Big.Bang.Theory
5) DRIVE/Series/The 10) S03E11.avi
Type a number or 'q' to quit:
你需要耍点小把戏:
# Show current series list
PS3="Type a number or 'q' to quit: "
# Create a list of files to display
Current_list=$(tr '\n' ',' < Current_series_list.txt)
IFS=, read -a list <<< "$Current_list"
select fileName in "${list[@]}"; do
if [ -n "$fileName" ]; then
Selected_series="${fileName}"
fi
break
done
echo "you selected $fileName"
关键的一点是,您必须将文件转换为数组
此部分将其转换为字符串1、字符串2格式:
您可以尝试将Current_series_list.txt的每一行分别读入数组元素,并从扩展数组${Current_array[@]}中选择:
非常感谢,在将其解析为所选变量时,我如何删除?我刚刚注意到,使用Current_list=$tr'\n'',“
$ ./a
1) /Volumes/Lara's Hard Drive/LARA HARD DRIVE/Series/The Big Bang Theory3/The.Big.Bang.Theory S03E11.avi
2) /Volumes/Lara's Hard Drive/LARA HARD DRIVE/Series/nakitaS03E11.avi
Type a number or 'q' to quit: 2
you selected /Volumes/Lara's Hard Drive/LARA HARD DRIVE/Series/nakitaS03E11.avi
$ tr '\n' ',' < Current_series_list.txt
/Volumes/Lara's Hard Drive/LARA HARD DRIVE/Series/The Big Bang Theory 3/The.Big.Bang.Theory S03E11.avi,/Volumes/Lara's Hard Drive/LARA HARD DRIVE/Series/nakitaS03E11.avi,
IFS=, read -a list <<< "$Current_list"
# Show current series list
PS3="Type a number or 'q' to quit: "
# Create an array of files to display
Current_array=()
while read line; do Current_array+=("$line"); done < Current_series_list.txt
select fileName in "${Current_array[@]}"; do
if [ -n "$fileName" ]; then
Selected_series=${fileName}
fi
break
done