Azure Pipeline:在Ubuntu机器脚本任务中写入带换行符的文件
在Azure Pipeline Ubuntu环境生成带换行符的文件解决方案
问题原因
你当前的Bash脚本里,echo命令默认不会解析双引号内的\n转义字符,只会将其作为普通文本写入文件,导致生成的内容里显示\n而非实际换行。
三种可行解决方法
方法1:使用echo -e解析转义序列
给echo加上-e参数,让它识别并处理\n这类转义字符:
- task: Bash@3 inputs: targetType: 'inline' script: | cd $(PROJECT_DIRECTORY) echo -e "storePassword=$(keystore-password)\nkeyPassword=$(key-password)\nkeyAlias=$(key-alias)\nstoreFile=./upload-keystore.jks" > MyFile.txt echo 'David: cat MyFile.txt' && cat MyFile.txt
方法2:使用printf命令(更推荐,适配特殊字符场景)
printf默认支持转义序列,且对变量中的特殊字符处理更稳妥:
- task: Bash@3 inputs: targetType: 'inline' script: | cd $(PROJECT_DIRECTORY) printf "storePassword=%s\nkeyPassword=%s\nkeyAlias=%s\nstoreFile=%s\n" "$(keystore-password)" "$(key-password)" "$(key-alias)" "./upload-keystore.jks" > MyFile.txt echo 'David: cat MyFile.txt' && cat MyFile.txt
方法3:使用Here-Document( heredoc)直接编写多行内容
这种写法最直观,无需转义换行符,直接按格式写入内容:
- task: Bash@3 inputs: targetType: 'inline' script: | cd $(PROJECT_DIRECTORY) cat > MyFile.txt << EOF storePassword=$(keystore-password) keyPassword=$(key-password) keyAlias=$(key-alias) storeFile=./upload-keystore.jks EOF echo 'David: cat MyFile.txt' && cat MyFile.txt
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

