在脚本中,这里尝试删除 : ,然后在打印输出中将 / 恢复为 \
目前我必须显示linux路径:主目录位于此处:rtp1-filer-ns:/homedir-private/private007/user
并希望重新格式化,以便我的用户轻松将 Windows 路径设置为主目录:\rtp1-filer-ns\homedir-private\private007\user
目前这部分脚本如下
echo "shell 是: `ypmatch $EndUser passwd | awk -F\: '{ print $7 }'`" 回显“” echo“主目录位于此处:” ypmatch $EndUser auto_home 回显“” echo "主目录的 Windows 路径:" echo "\\\\`ypmatch $EndUser auto_home | awk -F':' '{print $1}'`\\$EndUser"
给我打印出来:
主目录位于此处: rtp1-filer-ns:/homedir-private/private007/用户 Windows 主目录路径: \\rtp1-filer-ns\用户
假设我可以使用 sed /awk 之类的东西,开放征求建议 $EndUser 是一个已定义的变量
答案1
和bash
第一种方法 - 使用参数替换
#use command substitution to set command output into variable var
var=$(ypmatch $EndUser auto_home)
#strip out the first :
var=${var/:}
#replace all instances of / with \
var=${var//\//\\}
echo $var
rtp1-filer-ns\homedir-private\private007\user
第二种方法——使用数组
# Set path components into array frags
IFS=/ read -a frags < <(ypmatch $EndUser auto_home)
# Strip ":" off rtp1-filer-ns
frags[0]="${frags[0]%:}"
# Set IFS to \ to print frags \-separated
echo "$(IFS=\\ ;printf '%s\n' "${frags[*]}";)"
rtp1-filer-ns\homedir-private\private007\user