linux将字符串改大写,【已解决】makefile中把字符串转换为小写或大写

【背景】

折腾:

期间,需要去把得到的Cygwin字符串转换为小写,以便更靠谱的去判断是否是cygwin系统。

【解决过程】

1.参考:

感觉很是麻烦。

2.参考:

看到其有建议,

在make中添加uc()和lc()

以便取代:$(shell echo $(var) | tr '[A-Z]' '[a-z]')

3.开始以为lc是Linux下的工具呢,结果通过:Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ which lc

which: no lc in (/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/AMD APP/bin/x86_64:/cygdrive/c/Program Files (x86)/AMD APP/bin/x86:/cygdrive/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Program Files (x86)/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static:/cygdrive/c/Program Files/Microsoft/Web Platform Installer:/cygdrive/c/Program Files (x86)/Microsoft ASP.NET/ASP.NET Web Pages/v1.0:/cygdrive/c/Program Files (x86)/Windows Kits/8.0/Windows Performance Toolkit:/cygdrive/c/Program Files/Microsoft SQL Server/110/Tools/Binn:/cygdrive/c/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/Binn:/cygdrive/c/Program Files (x86)/Windows Live/Shared:/cygdrive/c/Program Files/Java/jdk1.7.0_25/bin:/usr/bin:/cygdrive/e/Dev_Root/docbook/tools/ant/apache-ant-1.8.4/bin:/cygdrive/e/Dev_Root/docbook/tools/fop-1.0:/cygdrive/e/dev_install_root/HTML Help Workshop:/cygdrive/e/dev_install_root/TortoiseSVN/bin:/cygdrive/e/dev_install_root/Go/bin:/cygdrive/e/Dev_Root/go/bin:/cygdrive/e/dev_install_root/Mercurial:/cygdrive/e/dev_install_root/IDM Computer Solutions/UltraEdit:/usr/lib/lapack:/opt/crosstool-ng/bin)

得知,不是。

4.然后,就可以去makefile中,去测试看看当前make是否支持lc了:

去测试:OS_NAME = $(shell uname -o)

LC_OS_NAME = lc($(OS_NAME))

checkcygwin:

echo "OS_NAME=" $(OS_NAME)

echo "LC_OS_NAME=" $(LC_OS_NAME)

结果还出现“/bin/sh: -c: line 0: syntax error near unexpected token `(‘”的错误了:

5.结果是不支持lc。

所以,去换用那个tr操作var的试试:OS_NAME = $(shell uname -o)

#LC_OS_NAME = $(lc $(OS_NAME))

LC_OS_NAME = $(shell echo $(OS_NAME) | tr '[A-Z]' '[a-z]')

checkcygwin:

echo "OS_NAME=" $(OS_NAME)

echo "LC_OS_NAME=" $(LC_OS_NAME)

结果是:

可以的:Administrator@PC-20130611GART /cygdrive/e/Dev_Root/docbook/tools/docbook-xsl-ns-1.78.1/webhelp

$ make checkcygwin

echo "OS_NAME=" Cygwin

OS_NAME= Cygwin

echo "LC_OS_NAME=" cygwin

LC_OS_NAME= cygwin

【总结】

makefile中,将字符串从大写转换为小写的,可以用:$(shell echo $(someVariable) | tr '[A-Z]' '[a-z]')

相反,makefile中,把字符串从小写转换为大写则用:$(shell echo $(someVariable) | tr '[a-z]' '[A-Z]')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值